Security Hub コントロール Config.1 のカスタムパラメータを CloudFormation で設定する

Security Hub コントロール Config.1 のカスタムパラメータを CloudFormation で設定する

Clock Icon2024.12.02

どうも、こんにちは kaz です。

最近、白身魚のポワレを作るのにハマってます。
パリッと焼けた白身魚に、レモンの風味を効かせたクリームソースがたまらなく美味しいです。

とろっとろのブールブランソースをうまく作れるようになりたいなぁと思いつつ、今日は AWS Security Hub の話をします。

はじめに

Security Hub コントロール [Config.1] は2024年8月15日に以下の仕様変更がありました。

このコントロールは、以下3つのチェック観点から評価されます。すべての観点が満たされていた場合に成功となります。

・AWS Config(レコーダー)が有効化されているか
・有効化されているすべてのSecurity Hubコントロールに対応するすべてのリソースタイプがConfigレコーダーで記録できているか
・AWS Configのサービスリンクロール(AWSServiceRoleForConfig)が作成されているか

CMメンバーズに加入している場合、初期設定で AWS Config の IAM ロールにカスタムロール「cm-config-role-all-regions」を設定します。
この IAM ロール「cm-config-role-all-regions」は弊社管理のロールであるため、変更を実施しないようお願いいたします。そしてこの状態だと、コントロールの3つ目のチェック観点に違反してしまうため、このコントロールは常に失敗となります。

回避手段として、2024 年 8 月 15 日に[Config.1]にカスタムパラメーター(includeConfigServiceLinkedRoleCheck)が追加されました。
デフォルト値の true を false に変更することで、3つ目のチェック観点を無効化し、1.および2.のチェック観点のみで[Config.1]を評価できるようになっています。

Configは基本的には必須の設定であるため、参考情報をもとに[Config.1]のカスタムパラメータを変更し、有効化することを検討して下さい。設定方法はこちらのブログをご参考下さい。

【アップデート】Security Hubコントロール [Config.1]のチェック観点から「AWS Configで使用されるIAMロールのチェック」を除外できるようになりました | DevelopersIO

どうやらこの仕様変更は徐々に適用されているようで、最近になって弊社で管理している Security Hub から大量に [Config.1] の失敗アラートが発生しました。
「なんだぁ?」とアラートを見てたら、たしかこんなアップデートあったなーと思い出したので、早速 CloudFormation を使ってカスタムパラメーターを設定してみました。

今回やりたいこと

今回設定したい内容は以下のドキュメントの通りです。

https://docs.aws.amazon.com/ja_jp/securityhub/latest/userguide/config-controls.html#config-1

つまり、AWS Config のロールに「カスタム IAM ロール」を使っている場合に、Security Hub の [Config.1] が失敗してしまう問題を回避するため、カスタムパラメーター includeConfigServiceLinkedRoleCheckfalse に設定するというものです。

カスタムパラメーターの設定

1. 現状の確認

まずは、現在の Security Hub の [Config.1] の状態を確認しておきましょう。

私のアカウントでは、us-east-1ap-northeast-1 リージョンで Security Hub が有効化されていますが、どちらも [Config.1] は失敗していることがわかります。

md-md-image-1.png

2. カスタムパラメーター名の確認

カスタムパラメーター名を把握するために [Config.1] のパラメーター定義を確認しておきましょう。
ドキュメントを見ると includeConfigServiceLinkedRoleCheck というパラメーターがあることがわかります。

md--image.png

ちなみに、以下のように AWS CLI コマンドでも確認が可能です。
ここからも includeConfigServiceLinkedRoleCheck パラメーターであることがわかりますね。

$ aws securityhub get-security-control-definition --security-control-id Config.1 --query 'SecurityControlDefinition.ParameterDefinitions'
{
  "includeConfigServiceLinkedRoleCheck": {
    "Description": "The control doesn't evaluate whether AWS Config uses the service-linked role if the parameter is set to 'false'.",
    "ConfigurationOptions": {
      "Boolean": {
        "DefaultValue": true
      }
    }
  }
}

3. CloudFormation での設定

Security Hub コントロールのカスタムパラメーターを設定するには、AWS::SecurityHub::SecurityControl を使って定義できます。

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-securityhub-securitycontrol.html

CloudFormation テンプレートの内容は非常にシンプルで、以下のようになります。

AWSTemplateFormatVersion: 2010-09-09
Description: Security Hub Control [Config.1] - Change the custom parameter "includeConfigServiceLinkedRoleCheck" to false

# ------------------------------------------------------------------------------
# Resources
# ------------------------------------------------------------------------------
Resources:
  Config1CustomParameter:
    Type: AWS::SecurityHub::SecurityControl
    Properties:
      SecurityControlId: Config.1
      Parameters:
        includeConfigServiceLinkedRoleCheck:
          ValueType: CUSTOM
          Value:
            Boolean: false
      LastUpdateReason: "Match current AWS environment settings"

これをデプロイすると、Security Hub の [Config.1] にカスタムパラメーター includeConfigServiceLinkedRoleCheck が設定されます。

4. 動作確認

デプロイ後に Security Hub の [Config.1] を確認すると、カスタムパラメーターが false に設定されていることがわかります。

md--image-3.png

しばらくすると、[Config.1] の評価が再実行され、以下のように PASSED になるはずです!(今回は ap-northeast-1 リージョンのみですが)

md-md-image-2.png

ちなみに、このコントロールは「定期的なセキュリティチェック」に分類され、12 または 24 時間後に再評価されるまで結果が反映されないことがあります。
気長に待ちましょう!

定期的なセキュリティチェックは、最新の実行から 12 または 24 時間以内に自動的に実行されます。周期は Security Hub によって決定され、変更はできません。定期的なコントロールは、チェック実行時の評価を反映したものになります。

参考: セキュリティチェックの実行スケジュール - AWS Security Hub

おまけ(なぜか PASSED にならない!?)

今回の設定は [Config.1] のチェック項目のうち、CONFIG_RECORDER_CUSTOM_ROLE に対して設定が有効になります。
このため、以下の画像のように CONFIG_RECORDER_MISSING_REQUIRED_RESOURCE_TYPES などの他のチェック項目も含まれている場合には、[Config.1] が PASSED になりませんのでご注意ください!

md-md-image.png

まとめ

CloudFormation を使って Security Hub の [Config.1] のカスタムパラメーターを設定する方法を紹介しました。
かなりシンプルに設定できるので、アカウントの初期設定などに組み込むことでカスタムパラメーターの定義を自動化できるのではないでしょうか!

この記事が、どなたかのお役に立てれば幸いです。

アノテーション株式会社について

アノテーション株式会社 は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。
「らしく働く、らしく生きる」のスローガンを掲げ、さまざまな背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けています。

現在当社では AWS の構築・運用経験があり、以下の業務に携わってくれるメンバーを募集中です。

  • AWS 環境の運用設計支援や構築
  • 運用監視とインシデント対応
  • 定型業務などの自動化

AWS 関連資格をお持ちの方、クラウドネイティブな運用経験者は大歓迎です。
少しでもご興味がありましたら 募集職種 よりご応募ください!!

一緒に働ける日を心待ちにしています!

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.